package process_demo.data_share;

/**
 * @author haomin
 * @date 2022/04/20 21:44
 **/
// 有几个 r？
// 两个 r
// 第一个 t.run.someObject 指向的对象中的 r
// 第二个 主线程.main.someObject 指向的对象中的 r
// 有两个对象，有两个 r
// 对象可以被共享，但不是对象一定被共享
public class Main4 {
    static class SomeObject {
        int r = 0;
    }

    static class MyThread extends Thread {
        @Override
        public void run() {
            SomeObject someObject = new SomeObject();   // 创建对象

            for (int i = 0; i < 1000; i++) {
                someObject.r++;
            }
            System.out.println(getName() + ":" + someObject.r);     // 1000
        }
    }

    public static void main(String[] args) throws InterruptedException {
        SomeObject someObject = new SomeObject();   // 创建对象

        MyThread t = new MyThread();
        t.start();

        t.join();
        System.out.println(Thread.currentThread().getName() + ":" + someObject.r);  // 0
    }
}